package com.javaweb.web.service;

import java.util.List;
import java.util.Map;

import com.javaweb.base.po.Role;
import com.javaweb.base.po.User;
import com.javaweb.util.entity.Page;
import com.javaweb.web.eo.role.ModuleInfoResponse;
import com.javaweb.web.eo.role.RoleAddRequest;
import com.javaweb.web.eo.role.RoleListAllResponse;
import com.javaweb.web.eo.role.RoleListRequest;
import com.javaweb.web.eo.role.RoleModifyRequest;

/**
 * 角色模块业务层接口
 * 
 * @author tank2140896
 */
public interface RoleService {
	
	/**
	 * 角色列表业务层接口
	 * 
	 * @param roleListRequest 角色列表请求参数
	 * @return Page 分页参数
	 */
	Page roleList(RoleListRequest roleListRequest);
	
	/**
	 * 角色删除业务层接口
	 * 
	 * @param roleId 角色ID
	 */
	void roleDelete(String roleId);

	/**
	 * 角色新增业务层接口
	 * 
	 * @param role 角色信息
	 */
	void roleAdd(Role role);
	
	/**
	 * 角色新增业务层接口
	 * 
	 * @param currentUser 当前登录的用户信息
	 * @param roleAddRequest 角色新增请求参数
	 */
	void roleAdd(User currentUser,RoleAddRequest roleAddRequest);

	/**
	 * 角色修改业务层接口
	 * 
	 * @param role 角色信息
	 */
	void roleModify(Role role);
	
	/**
	 * 角色修改业务层接口
	 * 
	 * @param currentUser 当前登录的用户信息
	 * @param roleModifyRequest 角色修改请求参数
	 */
	void roleModify(User currentUser,RoleModifyRequest roleModifyRequest);
	
	/**
	 * 角色详情业务层接口
	 * 
	 * @param roleId 角色ID
	 * @return Role 角色信息
	 */
	Role roleDetail(String roleId);
	
	/**
	 * 角色模块信息业务层接口
	 * 
	 * @param map 角色模块信息请求参数
	 * @return List<ModuleInfoResponse> 角色模块信息列表
	 */
	List<ModuleInfoResponse> roleModuleInfo(Map<String,String> map);
	
	/**
	 * 角色模块分配业务层接口
	 * 
	 * @param roleId 角色ID
	 * @param list 角色模块列表
	 */
	void roleModuleAssignment(String roleId,List<String> list);
	
	/**
	 * 角色列表业务层接口
	 * 
	 * @return List<RoleListAllResponse> 角色信息列表
	 */
	List<RoleListAllResponse> roleListAll();
	
}
